package com.luo.backend.controller;

import com.luo.backend.common.ApiResponse;
import com.luo.backend.dto.SearchResponse;
import com.luo.backend.service.SearchService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 搜索控制器
 */
@RestController
@RequestMapping("/api/v1")
public class SearchController {
    
    private static final Logger logger = LoggerFactory.getLogger(SearchController.class);
    
    @Autowired
    private SearchService searchService;
    
    /**
     * 搜索商品和商家
     * 
     * @param keyword 搜索关键词（必填）
     * @param type 搜索类型：all（全部）、food（商品）、merchant（商家），默认all
     * @param page 页码（从1开始），默认1
     * @param pageSize 每页数量，默认20，最大50
     * @return 搜索结果
     */
    @GetMapping("/search")
    public ApiResponse<SearchResponse> search(
            @RequestParam String keyword,
            @RequestParam(defaultValue = "all") String type,
            @RequestParam(defaultValue = "1") Integer page,
            @RequestParam(defaultValue = "20") Integer pageSize
    ) {
        try {
            // 参数校验
            if (keyword == null || keyword.trim().isEmpty()) {
                return ApiResponse.error("搜索关键词不能为空");
            }
            
            // 限制最大每页数量
            if (pageSize > 50) {
                pageSize = 50;
            }
            
            // 确保页码至少为1
            if (page < 1) {
                page = 1;
            }
            
            // 执行搜索
            SearchResponse result = searchService.search(keyword.trim(), type, page, pageSize);
            
            return ApiResponse.success("搜索成功", result);
            
        } catch (Exception e) {
            logger.error("搜索失败", e);
            return ApiResponse.error("搜索失败: " + e.getMessage());
        }
    }
}



